import debounce from '@/utils/debounce.js';
export default function (refvalue) {
    return {
        mounted() {
            // 创建一个函数防抖
            this.debonceScroll = debounce(this.handleScroll, 100);

            // 监听 toTop 事件
            this.$bus.$on("toTop", this.setMainScroll);

            // 监听 scroll 事件
            this.$refs[refvalue].addEventListener("scroll", this.debonceScroll);
        },
        methods: {
            // 滚动事件处理函数
            handleScroll() {
                // 在事件总线上抛出 mainScroll 事件，传递一个 dom 参数；
                this.$bus.$emit("mainScroll", this.$refs[refvalue]);
            },

            // 回到顶部事件处理函数
            setMainScroll(scrollTop) {
                // 设置滚动条为预设的值
                this.$refs[refvalue].scrollTop = scrollTop;
            },
        },
        beforeDestroy() {
            // 抛出 mainScroll 事件，但是不传递参数，表示事件处理函数都恢复到默认状态；
            this.$bus.$emit("mainScroll");

            // 解除事件监听
            this.$refs[refvalue].removeEventListener("scroll", this.debonceScroll);

            // 解除事件监听
            this.$bus.$off("toTop", this.setMainScroll);
        },
    }
}